#pragma once

#include <vector>

namespace ZeEngine
{
	//Forward declarations
	class Observer;

	class Subject
	{
	public:
		virtual ~Subject();

		void Attach( Observer* pObserver ) const;
		void Detach( Observer* pObserver ) const;
		void Notify() const;

	protected:
		Subject();

	private:
		mutable std::vector<Observer*> m_observers;
	};
}

